<?php

namespace App\Interfaces;

/**
 * 商品接口
 * @package App\Interfaces
 */
interface GoodsService {

    /**
     * 获取单个商品
     * @param $goods_id
     * @return mixed
     */
    public function get($goods_id);

    /**
     * 根据商品id数组获取商品信息
     * @param  [type] $goods_ids [商品id数组]
     * @return [type]            [description]
     */
    public function getGoodsByIds($goods_ids);

    /**
     * 根据分类ID获取所有商品
     * @param $cat_id
     * @return mixed
     */
    public function getCatGoods($cat_id,$number=10,$page);

    /**
     * 根据店铺获取商品
     * @param $shop_id
     * @return mixed
     */
    public function getGoodsByShop($shop_id,$page);

    /**
     * 获取店铺前几个商品显示
     * @param $shop_id
     * @return mixed
     */
    public function getShopGoods($shop_id);

    /**
     * 根据店铺统计商品
     * @param $shop_id
     * @return mixed
     */
    public function countGoodsByShop($shop_id);

    /**
     * 根据指定标识获取商品,如:首页推荐,分类推荐等..flag 为数据库字段名,如: is_cat_recommend
     * @return mixed
     */
    public function getFlagGoods($cat_id,$flag);

    /**
     * 获取分类推荐商品
     * @return mixed
     */
    public function getCatRecommendGoods($cat_id);

    /**根据指定ID数组获取商品
     * @param array $ids
     * @return mixed
     */
    public function getByIds($ids = []);

    /**
     * 获取单个图集
     * @param $goods_id
     * @return mixed
     */
    public function getGoodsGallery($goods_id);


    /**
     * 根据商品id获取商品所属商铺信息
     * @param $goods_id
     * @return mixed
     */
    public function getShop($shop_id);

    /**
     * 根据商品id获取商品的同类产品
     * @param $goods_id
     * @return mixed
     */
    public function getSimilar($goods_id);

    /**
     * 获取随机商品
     * @param $goods_count 随机取的条数
     * @return mixed
     */
    public function getRandomGoods($goods_count);

    public function getGoodsShippingFee($type,$address_id,$goodsPrice);

    public function getDefaultAddress($user_id);

    public function attributValueRedirect($goods_id, array $attributValueArr);

    public function mobileAttributValueRedirect($goods_id, array $attributValueArr);

    public function getSkus($arr,$delimiter=',');

}